#include <stdio.h>
#include <math.h>

//无符号整型最大值
const unsigned int Max=0xffffffff;
//最大位数
const int MaxWei=32;

int main(){
    unsigned int x,p,n;
    while (scanf("%u %u %u",&x,&p,&n)!=EOF)
    {
        if(x==0&&p==0&&n==0){
            break;
        }
		p++;
		if(p>MaxWei)
		{
			p=MaxWei;
		}
		if(n>p)
        {
            n=p;
        }
        //找到最低位数p-n 然后左移p-n位 去掉p-n以前的位数
		x=x>>(p-n);

        
        int tmp=(1 << n)-1;
        //去掉当前数字n位以后的数字
        x=x&tmp;
        printf("%u\n",x);
    }
    
    return 0;
}
